package com.ruoyi.purchase.mapper;

import java.util.List;
import com.ruoyi.purchase.domain.PurchaseOrders;
import com.ruoyi.purchase.domain.PurchaseOrdersDetails;
import com.ruoyi.purchase.vo.PurchaseOrderPageVO;
import org.apache.ibatis.annotations.Param;

/**
 * 采购订单Mapper接口
 *
 * @author ruoyi
 * @date 2025-10-20
 */
public interface PurchaseOrdersMapper
{

    /**
     * 根据ID查询采购订单详情
     */
    PurchaseOrdersDetails  selectPurchaseOrdersDetailsById(Long id);

    /**
     * 根据采购订单号统计详情数量
     */
    int countPurchaseOrdersDetailsByPoId(String poId);

    /**
     * 删除空的采购订单（没有详情的订单）
     */
    int deleteEmptyPurchaseOrders();




    /**
     * 更新采购订单详情
     */
    int updatePurchaseOrdersDetails(PurchaseOrdersDetails purchaseOrdersDetails);


    int updateboxCodesPurchaseOrdersDetails(PurchaseOrdersDetails purchaseOrdersDetails);
    /**
     * 查询采购订单页面列表（关联查询）
     */
    List<PurchaseOrderPageVO> selectPurchaseOrderPageList(PurchaseOrderPageVO purchaseOrderPageVO);


    /**
     * 根据采购订单号和存货编码查询采购详情表 用于修改页面组成主从表数据显示
     */
    PurchaseOrdersDetails  selectDetailByPoIdAndItemId(@Param("poId") String poId, @Param("itemId") String itemId);

    /**
     * 查询采购订单完整详情 详情页面查询
     */
    PurchaseOrderPageVO  selectDetaildataByPoIdAndItemId(@Param("poId") String poId, @Param("itemId") String itemId);

    /**
    * 查询当前最大采购订单号
     */
    String selectMaxPoId();

    /**
     * 查询采购订单
     *
     * @param id 采购订单主键
     * @return 采购订单
     */
    public PurchaseOrders selectPurchaseOrdersById(String id);

    /**
     * 查询采购订单列表
     *
     * @param purchaseOrders 采购订单
     * @return 采购订单集合
     */
    public List<PurchaseOrders> selectPurchaseOrdersList(PurchaseOrders purchaseOrders);

    /**
     * 新增采购订单
     *
     * @param purchaseOrders 采购订单
     * @return 结果
     */
    public int insertPurchaseOrders(PurchaseOrders purchaseOrders);

    /**
     * 修改采购订单
     *
     * @param purchaseOrders 采购订单
     * @return 结果
     */
    public int updatePurchaseOrders(PurchaseOrders purchaseOrders);

    public int updatePayoffNum(@Param("poId") String poId, @Param("itemId") String itemId, @Param("payoffNum") Long payoffNum);
    /**
     * 删除采购订单
     *
     * @param poId 采购订单主键
     * @return 结果
     */
    public int deletePurchaseOrdersById(String poId);

    /**
     * 批量删除采购订单 用不到
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePurchaseOrdersByIds(Long[] ids);

    /**
     * 批量删除采购订单
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePurchaseOrdersDetailsByPoIds(Long[] ids);

    /**
     * 批量新增采购订单
     *
     * @param purchaseOrdersDetailsList 采购订单列表
     * @return 结果
     */
    public int batchPurchaseOrdersDetails(List<PurchaseOrdersDetails> purchaseOrdersDetailsList);


    /**
     * 通过采购订单主键删除采购订单信息
     *
     * @param id 采购订单ID
     * @return 结果
     */
    public int deletePurchaseOrdersDetailsByPoId(Long id);
}
